沒想到 Day04 是單純的 JS 題目,主要聚焦在 JavaScript 陣列方法的使用,但我最後還是有寫在 CodeSandBox 裡面惹,就開始ㄅ
篩選出 1500 年代(1500-1599)出生的人
filter
會建立新的陣列,包含所有通過檢查的項目inventors.filter(
(inventor) => inventor.year >= 1500 && inventor.year < 1600
)
建立新的陣列,包含每個人的全名
map
會回傳全新的陣列inventors.map((inventor) => `${inventor.first} ${inventor.last}`)
按出生日期排序
要注意的是 sort
會改變原始資料,所以這邊複製後再處理
如果比較結果為負,a
排在 b
前面;如果為正,b
排在 a
前面
[...inventors].sort((a, b) => a.year - b.year)
計算全員的壽命總和
reduce
會對陣列裡的項目執行 reducer
,最後把結果總和起來做回傳inventors.reduce(
(total, inventor) => total + (inventor.passed - inventor.year),
0
),
以壽命排序
sort
用 b-a
所以是降冪排序
[...inventors].sort(
(a, b) => b.passed - b.year - (a.passed - a.year)
),
依照姓氏字母順序排序
先從字串裡面用 split(", ")
來切割抓出姓氏
比較後回傳 1 或 -1
[...people].sort((lastOne, nextOne) => {
const [aLast] = lastOne.split(", ");
const [bLast] = nextOne.split(", ");
return aLast > bLast ? 1 : -1;
}),
統計出現次數
也可以用 reduce
搭配 Map
set
使用 Map()
來儲存每種交通工具的計數
最後把結果轉為普通物件
const transportationCount = data.reduce((map, item) => {
map.set(item, (map.get(item) || 0) + 1);
return map;
}, new Map());
return Object.fromEntries(transportationCount);
map
會回傳新的陣列
sort
會改變原始資料